package com.sxkj.service.sys;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.github.pagehelper.PageHelper;
import com.sxkj.common.utils.StringUtils;
import com.sxkj.entity.entity.sys.Role;
import com.sxkj.entity.entity.sys.RoleMenu;
import com.sxkj.entity.mapper.sys.RoleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 *
 * @title: RoleService
 * @author: daixiaowei
 * @date: 2019年12月19日 下午 01:53:55
 */
@Service
public class RoleService {
    @Autowired
    private RoleMenuService roleMenuService;
    @Autowired
    private RoleMapper roleMapper;

    /**
     *
     * @title: searchListPage
     * @author: daixiaowei
     * @date: 2019年12月19日 下午 01:55:38
     * @description: 查询角色列表
     * @param: name pageSize pageNum
     * @return:
     */
    public List<Role> searchListPage(String name, Integer pageSize, Integer pageNum) {
        PageHelper.startPage(pageNum, pageSize);
        return roleMapper.searchListPage(name);
    }

    /**
     *
     * @title: roleAdd
     * @author: daixiaowei
     * @date: 2019年12月21日 下午 01:52:03
     * @description: 用户添加
     * @param: role
     * @return:
     */
    public void roleAdd(Role role) {
        JSONArray ja= JSON.parseArray(role.getMenuIds());
        role.preInsert();
        roleMenuInsert(role,ja);
        roleMapper.insert(role);
    }

    /**
     *
     * @title: roleMenuInsert
     * @author: daixiaowei
     * @date: 2019年12月21日 下午 02:09:30
     * @description: 格式插入roleMenu
     * @param: role ja
     * @return:
     */
    private void roleMenuInsert(Role role,JSONArray ja) {
        for (int i=0;i<ja.size();i++){
            RoleMenu roleMenu = new RoleMenu();
            roleMenu.setMenuId(ja.get(i).toString());
            roleMenu.setRoleId(role.getId());
            roleMenuService.insert(roleMenu);
        }
    }

    /**
     *
     * @title: roleUpdate
     * @author: daixiaowei
     * @date: 2019年12月21日 下午 03:36:49
     * @description: 更新角色
     * @param: parm
     * @return:
     */
    public void roleUpdate(Role roleAdmin) {
        Role role = roleMapper.selectByPrimaryKey(roleAdmin.getId());
        if (StringUtils.isNotEmpty(roleAdmin.getName())) {
            role.setName(roleAdmin.getName());
        }
        if (StringUtils.isNotEmpty(roleAdmin.getName())) {
            role.setName(roleAdmin.getName());
        }
        if (StringUtils.isNotEmpty(roleAdmin.getAliasName())) {
            role.setAliasName(roleAdmin.getAliasName());
        }
        if (StringUtils.isNotEmpty(roleAdmin.getNote())) {
            role.setNote(roleAdmin.getNote());
        }
        role.setType(role.getType());
        role.preInsert();
        JSONArray ja=JSON.parseArray(roleAdmin.getMenuIds());
        if (StringUtils.isNotEmpty(roleAdmin.getId())) {
            roleMenuService.deleteByRoleId(roleAdmin.getId());
            roleMenuInsert(roleAdmin,ja);
        }
        roleMapper.updateByPrimaryKey(role);
    }

    /**
     *
     * @title: deleteByUserId
     * @author: daixiaowei
     * @date: 2019年12月21日 下午 04:14:01
     * @description: 删除用户及关联
     * @param: id
     * @return:
     */
    public void deleteByUserId(String id) {
        roleMenuService.deleteByRoleId(id);
        roleMapper.deleteByPrimaryKey(id);
    }

    /**
     *
     * @title: searchList
     * @author: daixiaowei
     * @date: 2019年12月24日 下午 01:58:32
     * @description: 查询角色公用方法
     * @param:
     * @return:
     */
    public List<Role> searchList() {
      return   roleMapper.findList();
    }
}
